﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CLab.Base;
using CLab.Common.Constantes;
using convert = CLab.Common.Util.Convert;
using CLab.Common.Objects;
using CLab.Utils.Extensions;

namespace CLab.PagAdminLab
{
    public partial class CapturaEstudio : PageBase
    {
        #region Propiedades
        private int? IdResultado
        {
            get
            {
                if (ViewParametros.Count > 0)
                    return convert.ToNInt(ViewParametros.Find(delegate(Parametro p) { return p.Nombre == "IdResultado"; }).Valor);
                return null;
            }
        }

        private int? IdRecibo
        {
            get {
                if (ViewParametros.Count > 0)
                    return convert.ToNInt(ViewParametros.Find(delegate(Parametro p) { return p.Nombre == "IdRecibo"; }).Valor);
                return null;
            }
        }
        #endregion

        #region Eventos
        protected void Page_Init(object sender, EventArgs e)
        {
            IdItem = 6;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IdRecibo == null && IdResultado == null)
            {
                Response.Redirect("ConsultaResultados.aspx", false);
                return;
            }

            if (!Page.IsPostBack)
            {
                InitializePage();
            }
        }

        protected void gEst_SelectedIndexChanged(object sender, EventArgs e)
        {
            ShowEstudio(convert.ToInt(gEst.SelectedDataKey["IdEstudio"]));
        }
        #endregion

        #region Metodos
        private void InitializePage()
        {
            Master.TituloPagina = "Captura de Resultados";
            gEst.DataSource = ObtenEstudios(SessionLaboratorio.IdLaboratorio, SessionLaboratorio.IdSucursal, IdResultado, IdRecibo);
            gEst.DataBind();
            upgest.Update();
        }

        private void ShowEstudio(int idEstudio)
        {
            est.IdEstudio = idEstudio;
            est.IdResultado = IdResultado;
            est.DataBind();
        }

        public DataTable ObtenEstudios(int? idLaboratorio, int? idSucursal, int? idResultado, int? idRecibo)
        {
            ArrayList parametros = new ArrayList();
            ConsultaServiceReference.ConsultaServiceClient servicio = new ConsultaServiceReference.ConsultaServiceClient();
            //Parametros
            parametros.Add(CreaParametroConsulta(Parametros.pnIdLaboratorio, idLaboratorio, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta(Parametros.pnIdSucursal, idSucursal, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta(Parametros.pnIdResultado, idResultado, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta(Parametros.pnIdRecibo, idRecibo, ConsultaServiceReference.Parameter.vEnumType.Int));
            ConsultaServiceReference.Parameter[] parameters = new ConsultaServiceReference.Parameter[parametros.Count];
            parametros.CopyTo(parameters);
            //Ejecuta conulta
            DataTable dt = servicio.EjecutaConsultaConParametros("spObtenEstudiosCaptura", parameters).Tables[0];

            return dt;
        }
        #endregion
    }
}